package com.xiaolin.base.common;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName PerfectNumber
 * @Description 完数
 * @Detail 一个数如果恰好等于它的因子之和，这个数就称为"完数"。例如6=1＋2＋3.编程找出1000以内的所有完数,注意1不是完数，完数是除自己之外的因子
 * @Author MyPC
 * @Date 2020/8/10
 * @Version 1.0
 */
public class PerfectNumber {
    public static void main(String[] args) {
        perfectNumber(1,1000);
    }
    public static void perfectNumber(int start,int end){
        List<Integer> list=new ArrayList<>();
        List<Integer> temp=new ArrayList<>();
        //因子之和
        int sum=0;
        for (int i=start;i<=end;i++){
            //1、找出一个数的所有因子
            for(int j=1;j<=i/2;j++){
                if(i%j==0){
                    sum+=j;
                    temp.add(j);
                }
            }
            //2、判断因子之后是否与数相等
            if(i==sum){
                list.add(i);
                System.out.println(temp);
            }
            temp.clear();
            sum=0;
        }
        System.out.println(list);
    }
}
